// 引入Vue
import Vue from 'vue'
// 引入Vuex
import Vuex from 'vuex'
// Vuex就是vue的一个插件,所以要使用这个插件
Vue.use(Vuex)

// 创建store对象
const store = new Vuex.Store({
  // state就是store中存储的数据
  state: { c: 1 }, //初始化数据
  // 调用store对象的dispatch函数触发的是actions中的函数
  actions: {
    add({ commit }, value) {
      // actionObj是一个内置的对象,里面有一些信息和触发mutation的commit方法
      // value 就是触发actions时传入的参数
      //   console.log('actions的add触发了', actionObj, value)
      commit('jia', value)
    },
  },
  // mutations是被store的commit函数触发.用于修改state数据
  mutations: {
    jia(state, value) {
      // state就是store中存储的state数据
      // value是commit调用时传递过来的数据
      // mutations是修改vuex中state数据的唯一途径
      state.c = state.c + value
    },
  },
  // vuex的getters类似于vue中的计算属性
  getters: {
    // bigC会添加到store.getters上面
    bigC(state) {
      // getters函数的执行时机: 1. 初始化getters时, 2. 当依赖的数据发生变化时
      // state就是store.state数据
      // 返回值决定了store.getters.bigC的值
      return state.c * 10
    },
  },
})

export default store
